package com.tt.job.api;

import com.tt.job.api.schedule.ScheduleType;
import com.tt.job.api.type.JobType;

import java.util.List;
import java.util.Set;

/**
 * 定义一个作业任务
 * 所有的作业任务都是一个Spring Service
 */
public interface Job {
    /**
     * 返回该job实现的逻辑操作描述
     *
     * @return
     */
    String getDescription();

    /**
     * 获取job需要的参数信息
     *
     * @return
     */
    List<JobParameterInfo> getJobParameters();

    /**
     * 返回当前任务支持的调度方式
     *
     * @return
     */
    Set<ScheduleType> getJobSupportScheduleType();

    /**
     * 任务的执行模式
     *
     * @return
     */
    JobMode getMode();

    /**
     * 获取任务的名称
     *
     * @return
     */
    String getName();

    /**
     * 获取当前job的类型
     *
     * @return
     */
    JobType getType();

}
